package com.candy.oop;

public class Student {
//共性的特征（属性）
    int stuNo;
    String stuName;
    boolean stuSex;
//    静态变量
    static String schoolName="德州学院";

    Teacher teacher;
    static{

    }

//构造函数，构造函数中可以没有参数，这里是一个无参构造
//    在对象初始化时会被调用（new）
//    在创建类的时候，若没有声明构造函数，系统会默认有一个无参构造
//    当显示声明了一个构造函数，系统会将默认的无参构造收回
//    此时，显示声明构造函数即可
    public Student(){
        System.out.println(this);
        System.out.println("我被调用了...");
    }
    public Student(String stuName){
//        this表示当前对象
//        该行代码的作用：当前对象的stuName属性的值为创建对象时传入的  stuName 的值
        this.stuName=stuName;
    }
//    快捷键  alt+insert可以自动生成构造函数
    public Student(int stuNo, String stuName, boolean stuSex) {
        this.stuNo = stuNo;
        this.stuName = stuName;
        this.stuSex = stuSex;
    }

    // 共性的行为（方法）
//语法 【访问控制修饰符】  返回值类型  方法名（形参列表）{方法体}
    //    如果方法的返回值类型是非void的情况，方法体内必须要有return，且return后的数据类型要与返回值类型一致
    public String sayBye(){
        return "再见！";
    }
    public void sayHi(){
        System.out.println("你好！");
    }
//    方法的重载：方法名字相同，但参数列表不同，称之为方法的重载！
//    在方法声明时，指定的参数列表为形参
    public void sayHi(String stuName){
        System.out.println("您好，我是"+stuName);
    }

    public void sayHello(int age){
        age=25;
        System.out.println("我今年"+age);
    }
//    对象类型可以作为引用类型的参数
    public void sayHello(Teacher teacher){
        teacher.teaName="马老师";
        System.out.println("我的老师是"+teacher.teaName);
    }
//     static修饰的方法为静态方法
    public static void getSchoolName(){
        System.out.println("静态方法只能够访问静态变量"+schoolName);
        System.out.println("这是静态方法");
    }

}
